package com.jame.test.aoptest;

import com.jame.test.aoptest.config.ScanConfig;
import com.jame.test.aoptest.pojo.AopA;
import com.jame.context.ApplicationContext;


/**
 * @author : Jame
 * @date : 2021-07-02 10:07
 **/
public class Demo {

    public static void main(String[] args) {
        ApplicationContext context = new ApplicationContext(ScanConfig.class);

        System.out.println("单例依赖原型");
        AopA bean = context.getBean(AopA.class);
        System.out.println("方法增强");
        bean.a();
        bean.b();
        bean.b.a();
        System.out.println("对象");
        System.out.println(bean);
        System.out.println(bean.b);
        System.out.println(bean.b.a);
        System.out.println(bean.b.a.b);

        System.out.println("\n");

        AopA bean1 = context.getBean(AopA.class);
        System.out.println("方法增强");
        bean.a();
        bean.b();
        bean.b.a();
        System.out.println("对象");
        System.out.println(bean1);
        System.out.println(bean1.b);
        System.out.println(bean1.b.a);
        System.out.println(bean1.b.a.b);

        System.out.println("\n\n-----单例依赖单例------\n\n");
//
//        AopC bean2 = context.getBean(AopC.class);
//        System.out.println("方法增强");
//        bean2.a();
//        bean2.d.a();
//        System.out.println("对象");
//        System.out.println(bean2);
//        System.out.println(bean2.d);
//        System.out.println(bean2.d.c);
//        System.out.println(bean2.d.c.d);
//
//        System.out.println("\n");
//
//        AopC bean3 = context.getBean(AopC.class);
//        System.out.println("方法增强");
//        bean3.a();
//        bean3.d.a();
//        System.out.println("对象");
//        System.out.println(bean3);
//        System.out.println(bean3.d);
//        System.out.println(bean3.d.c);
//        System.out.println(bean3.d.c.d);

    }
}
